\requiere {dniCheckIn(i) == dniCheckOut(o)}
\requiere {fechaCheckIn(i) < fechaCheckOut(o)}
%\requiere {existeHabitacionDelTipo(h, tipo(hb))} % reemplazado por la siguiente linea:
\requiere {hb \in habitaciones(h)}
\requiere {(\exists c \selec ingresos(h), snd(c) == hb) prm(c)== i}
\requiere {o \in salidas(h)}
\requiere {(\nexists y \selec fechasIngresoDe(h, dniCheckIn(i)), y \in (fechaCheckIn(i)..fechaCheckOut(o)]}
\requiere {(\nexists x \selec fechasSalidasDe(h, dniCheckOut(o)), x \in [fechaCheckIn(i)..fechaCheckOut(o))}

\asegura {result == importeEstadia(h,hb,i,o) + \sum precioDeAccesorios(h,hb)}

\aux {fechasIngresoDe}{h: Hotel, d: DNI}{[Fecha]}{\comp {snd(fi)}{fi \selec ingresosDe(h,d)}}

\aux {fechasSalidasDe}{h: Hotel, d: DNI}{[Fecha]}{\comp {snd(fs)}{fs \selec SalidasDe(h,d)}}

\aux {precioDeAccesorios}{h: Hotel, hb: Habitacion}{[Dinero]}{\comp {snd(pa)}{a \selec accesorios(hb), pa \selec precioAccesorio(h), a == prm(pa)}}

\aux {importeEstadia}{h: Hotel, hb: Habitacion, i: CheckIn, o: CheckOut}{\ent}{dias(i,o) \ast precioTipoHabitacion(tipo(hb), tarifaHabitacionXDia(h))}

\aux {dias}{i: CheckIn, o: CheckOut}{\ent}{fechaCheckOut(o) - fechaCheckIn(i)}

\aux {precioTipoHabitacion}{th: TipoHabitacion, t: [(TipoHabitacion, Dinero)]}{Dinero}{\IfThenElse {th == prm(t_0)}{snd(t_0)}{(\IfThenElse {th == prm(t_1)}{snd(t_1)}{(\IfThenElse {th == prm(t_2)}{snd(t_2)}{snd(t_3)})})}}
